900
|
How do I get ride of the separator items when the user performs grouping
![](images/exgridq900.png)
// AddGroupItem event - Occurs after a new Group Item has been inserted to Items collection.
procedure TForm1.Grid1AddGroupItem(ASender: TObject; Item : HITEM);
begin
with Grid1 do
begin
Items.ItemDividerLine[Item] := EXGRIDLib_TLB.EmptyLine;
end
end;
with Grid1 do
begin
BeginUpdate();
ColumnAutoResize := False;
rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset);
with rs do
begin
Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null);
end;
DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
SortBarVisible := True;
SortBarCaption := 'Drag a <b>column</b> header here to group by that column.';
AllowGroupBy := True;
Columns.Item[OleVariant(1)].SortOrder := EXGRIDLib_TLB.SortAscending;
LinesAtRoot := EXGRIDLib_TLB.exGroupLinesOutside;
EndUpdate();
end
|
899
|
How do I split a cell in three parts, and having a radio button in each of them
![](images/exgridq899.png)
// CellStateChanged event - Fired after cell's state has been changed.
procedure TForm1.Grid1CellStateChanged(ASender: TObject; Item : HITEM;ColIndex : Integer);
begin
with Grid1 do
begin
OutputDebugString( Items.CellCaption[OleVariant(Item),OleVariant(ColIndex)] );
end
end;
// Click event - Occurs when the user presses and then releases the left mouse button over the grid control.
procedure TForm1.Grid1Click(ASender: TObject; );
begin
with Grid1 do
begin
h := ItemFromPoint[-1,-1,c,hit];
Items.CellState[OleVariant(h),OleVariant(c)] := 1;
end
end;
with Grid1 do
begin
BeginUpdate();
FullRowSelect := EXGRIDLib_TLB.exColumnSel;
SelBackColor := BackColor;
SelForeColor := ForeColor;
DrawGridLines := EXGRIDLib_TLB.exAllLines;
ShowFocusRect := False;
(IUnknown(Columns.Add('Default')) as EXGRIDLib_TLB.Column).Def[EXGRIDLib_TLB.exCellValueFormat] := OleVariant(1);
with Items do
begin
h := AddItem('entire');
h := AddItem('Radio <b>1');
CellRadioGroup[OleVariant(h),OleVariant(0)] := 100;
CellHasRadioButton[OleVariant(h),OleVariant(0)] := True;
CellState[OleVariant(h),OleVariant(0)] := 1;
h := SplitCell[OleVariant(h),OleVariant(0)];
CellValue[OleVariant(0),OleVariant(h)] := 'Radio <b>2';
CellRadioGroup[OleVariant(0),OleVariant(h)] := 100;
CellHasRadioButton[OleVariant(0),OleVariant(h)] := True;
h := SplitCell[OleVariant(0),OleVariant(h)];
CellValue[OleVariant(0),OleVariant(h)] := 'Radio <b>3';
CellRadioGroup[OleVariant(0),OleVariant(h)] := 100;
CellHasRadioButton[OleVariant(0),OleVariant(h)] := True;
h := AddItem('entire');
end;
EndUpdate();
end
|
898
|
Does your grid include a row indicator , like an arrow, bullet
![](images/exgridq898.png)
// SelectionChanged event - Fired after a new item has been selected.
procedure TForm1.Grid1SelectionChanged(ASender: TObject; );
begin
with Grid1 do
begin
with Items do
begin
hFocusItem := FocusItem;
CellValue[Grid1.Columns.Item['active'].Data,'active'] := '';
CellValue[OleVariant(hFocusItem),'active'] := '<c><font symbol>·';
CellVAlignment[OleVariant(hFocusItem),'active'] := EXGRIDLib_TLB.exBottom;
Grid1.Columns.Item['active'].Data := OleVariant(hFocusItem);
end;
end
end;
with Grid1 do
begin
BeginUpdate();
ColumnAutoResize := False;
rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset);
with rs do
begin
Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null);
end;
DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
ShowFocusRect := False;
ContinueColumnScroll := True;
ScrollBySingleLine := True;
AutoDrag := Integer(EXGRIDLib_TLB.exAutoDragScrollOnShortTouch) Or Integer(EXGRIDLib_TLB.exAutoDragScroll);
with (IUnknown(Columns.Add('')) as EXGRIDLib_TLB.Column) do
begin
Key := 'active';
Position := 0;
AllowSizing := False;
Width := 12;
Data := OleVariant(Grid1.Items.FocusItem);
Def[EXGRIDLib_TLB.exCellValueFormat] := OleVariant(1);
end;
CountLockedColumns := 1;
with Items do
begin
SelectItem[NextVisibleItem[FocusItem]] := True;
end;
EndUpdate();
end
|
897
|
How can I connect to a DBF file
with Grid1 do
begin
ColumnAutoResize := False;
ContinueColumnScroll := False;
rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADODB.Recordset'))) as ADODB_TLB.Recordset);
with rs do
begin
Open('Select * From foxcode.DBF','Provider=vfpoledb;Data Source=C:\Program Files\Microsoft Visual FoxPro 9\',3,3,Null);
end;
DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
end
|
896
|
Does your control supports scrolling by touching the screen
![](images/exgridq896.png)
with Grid1 do
begin
ColumnAutoResize := False;
rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset);
with rs do
begin
Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null);
end;
DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
ContinueColumnScroll := True;
ScrollBySingleLine := True;
AutoDrag := Integer(EXGRIDLib_TLB.exAutoDragScrollOnShortTouch) Or Integer(EXGRIDLib_TLB.exAutoDragScroll);
end
|
895
|
How do I prevent showing the control's BackColorAlternate property on empty / non-items part of the control
![](images/exgridq895.png)
with Grid1 do
begin
BeginUpdate();
BackColorAlternate := $7ff0f0f0;
Columns.Add('Column');
with Items do
begin
AddItem('Item 1');
AddItem('Item 2');
AddItem('Item 3');
AddItem('Item 4');
AddItem('Item 5');
end;
EndUpdate();
end
|
894
|
Is there any method for reading information from the root item for the current item...
![](images/exgridq894.png)
with Grid1 do
begin
BeginUpdate();
LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot;
SearchColumnIndex := 0;
Columns.Add('Info');
with Items do
begin
PathSeparator := ' ; ';
SelectItem[InsertItem(InsertItem(InsertItem(InsertItem(Null,Null,'Root'),Null,'Child'),Null,'Sub-Child'),Null,'Sub-Sub-Child')] := True;
ExpandItem[0] := True;
OutputDebugString( FullPath[FocusItem] );
end;
EndUpdate();
end
|
893
|
How can I highlight items with a specified date
![](images/exgridq893.png)
with Grid1 do
begin
BeginUpdate();
with Columns do
begin
Add('Tasks');
with (IUnknown(Add('Date')) as EXGRIDLib_TLB.Column) do
begin
SortType := EXGRIDLib_TLB.SortDate;
Editor.EditType := EXGRIDLib_TLB.SpinType;
end;
end;
with Items do
begin
CellValue[OleVariant(AddItem('Task 1')),OleVariant(1)] := '12/13/2001';
CellValue[OleVariant(AddItem('Task 2')),OleVariant(1)] := '12/14/2001';
CellValue[OleVariant(AddItem('Task 2')),OleVariant(1)] := '12/15/2001';
end;
ConditionalFormats.Add('%1 = #12/14/2001#',Null).Bold := True;
EndUpdate();
end
|
892
|
Today date is shown, if we use the Column.FormatColumn and Editor.Option(exDateAllowNullDate) properties. What can be done
![](images/exgridq892.png)
with Grid1 do
begin
BeginUpdate();
with (IUnknown(Columns.Add('Date')) as EXGRIDLib_TLB.Column) do
begin
FormatColumn := 'len(value) ? ( (longdate(date(value)) left 3) + '' '' + day(date(value)) + ''/'' + month(date(value)) + ''/'' + (year(date(value)) rig' +
'ht 2) ) : '''' )';
with Editor do
begin
EditType := EXGRIDLib_TLB.DateType;
Option[EXGRIDLib_TLB.exDateAllowNullDate] := OleVariant(True);
end;
end;
with Items do
begin
AddItem('5/12/2012');
AddItem(Null);
AddItem('5/14/2012');
end;
EndUpdate();
end
|
891
|
How can I add multiple values/columns on the same line/item/row
![](images/exgridq891.png)
// Change event - Occurs when the user changes the cell's content.
procedure TForm1.Grid1Change(ASender: TObject; Item : HITEM;ColIndex : Integer;var NewValue : OleVariant);
begin
with Grid1 do
begin
Refresh();
end
end;
with Grid1 do
begin
BeginUpdate();
SortOnClick := EXGRIDLib_TLB.exNoSort;
LinesAtRoot := EXGRIDLib_TLB.exGroupLinesOutside;
Indent := 13;
HeaderVisible := False;
LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot;
with Columns do
begin
Add('Items');
(IUnknown(Add('Quantity')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.SpinType;
(IUnknown(Add('Value')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.SpinType;
end;
with Items do
begin
h := AddItem('Items');
CellValue[OleVariant(h),OleVariant(2)] := 'sum(current,dir,dbl(%1)*dbl(%2))';
CellValueFormat[OleVariant(h),OleVariant(2)] := EXGRIDLib_TLB.exTotalField;
FormatCell[OleVariant(h),OleVariant(2)] := '`Total: `+ value';
CellHAlignment[OleVariant(h),OleVariant(2)] := EXGRIDLib_TLB.RightAlignment;
CellBold[OleVariant(h),OleVariant(2)] := True;
CellEditorVisible[OleVariant(h),OleVariant(2)] := EXGRIDLib_TLB.exEditorHidden;
CellEditorVisible[OleVariant(h),OleVariant(1)] := EXGRIDLib_TLB.exEditorHidden;
h1 := InsertItem(h,Null,'Item 1');
CellValue[OleVariant(h1),OleVariant(1)] := OleVariant(10);
CellValue[OleVariant(h1),OleVariant(2)] := OleVariant(3);
h1 := InsertItem(h,Null,'Item 2');
CellValue[OleVariant(h1),OleVariant(1)] := OleVariant(20);
CellValue[OleVariant(h1),OleVariant(2)] := OleVariant(4);
ExpandItem[h] := True;
end;
EndUpdate();
end
|
890
|
Is there a syntax for conditional formatting of items, based on CellState/CellStateChange
![](images/exgridq890.png)
// CellStateChanged event - Fired after cell's state has been changed.
procedure TForm1.Grid1CellStateChanged(ASender: TObject; Item : HITEM;ColIndex : Integer);
begin
with Grid1 do
begin
with Items do
begin
CellValue[OleVariant(Item),OleVariant(2)] := OleVariant(CellState[OleVariant(Item),OleVariant(0)]);
end;
end
end;
with Grid1 do
begin
BeginUpdate();
ShowFocusRect := False;
SelBackMode := EXGRIDLib_TLB.exTransparent;
var_ConditionalFormat := ConditionalFormats.Add('%2 != 0',Null);
with var_ConditionalFormat do
begin
Bold := True;
ForeColor := $ff;
ApplyTo := EXGRIDLib_TLB.exFormatToItems;
end;
with (IUnknown(Columns.Add('')) as EXGRIDLib_TLB.Column) do
begin
Def[EXGRIDLib_TLB.exCellHasCheckBox] := OleVariant(True);
Width := 16;
AllowSizing := False;
end;
Columns.Add('Information');
(IUnknown(Columns.Add('Hidden')) as EXGRIDLib_TLB.Column).Visible := False;
with Items do
begin
CellValue[OleVariant(AddItem('')),OleVariant(1)] := 'This is a bit of text associated';
h := AddItem('');
CellValue[OleVariant(h),OleVariant(1)] := 'This is a bit of text associated';
CellState[OleVariant(h),OleVariant(0)] := 1;
CellValue[OleVariant(AddItem('')),OleVariant(1)] := 'This is a bit of text associated';
end;
EndUpdate();
end
|
889
|
How do I programatically focus a cell
![](images/exgridq889.png)
// FocusChanged event - Occurs when a new cell is focused.
procedure TForm1.Grid1FocusChanged(ASender: TObject; );
begin
with Grid1 do
begin
with Items do
begin
CellBackColor[OleVariant(FocusItem),OleVariant(Grid1.FocusColumnIndex)] := $ff;
end;
end
end;
with Grid1 do
begin
BeginUpdate();
SelForeColor := ForeColor;
SelBackColor := BackColor;
DrawGridLines := EXGRIDLib_TLB.exRowLines;
with Columns do
begin
Add('Column1');
Add('Column2');
end;
with Items do
begin
CellValue[OleVariant(AddItem('Cell 1.1')),OleVariant(1)] := 'Cell 1.2';
CellValue[OleVariant(AddItem('Cell 2.1')),OleVariant(1)] := 'Cell 2.2';
end;
with Items do
begin
SelectItem[ItemByIndex[1]] := True;
end;
FocusColumnIndex := 1;
EndUpdate();
end
|
888
|
How do I programatically focus a cell (excrd)
![](images/exgridq888.png)
// FocusChanged event - Occurs when a new cell is focused.
procedure TForm1.Grid1FocusChanged(ASender: TObject; );
begin
with Grid1 do
begin
with Items do
begin
CellBackColor[OleVariant(FocusItem),OleVariant(Grid1.FocusColumnIndex)] := $ff;
end;
end
end;
with Grid1 do
begin
BeginUpdate();
SelForeColor := ForeColor;
SelBackColor := BackColor;
DrawGridLines := EXGRIDLib_TLB.exRowLines;
DefaultItemHeight := 36;
with Columns do
begin
(IUnknown(Add('Column1')) as EXGRIDLib_TLB.Column).Visible := False;
(IUnknown(Add('Column2')) as EXGRIDLib_TLB.Column).Visible := False;
(IUnknown(Add('Column3')) as EXGRIDLib_TLB.Column).Visible := False;
with (IUnknown(Add('FormatLevel')) as EXGRIDLib_TLB.Column) do
begin
FormatLevel := '(0/1),2';
Def[EXGRIDLib_TLB.exCellFormatLevel] := OleVariant(FormatLevel);
end;
end;
with Items do
begin
h := AddItem('Cell 1.1');
CellValue[OleVariant(h),OleVariant(1)] := 'Cell 1.2';
CellValue[OleVariant(h),OleVariant(2)] := 'Cell 1.3';
h := AddItem('Cell 2.1');
CellValue[OleVariant(h),OleVariant(1)] := 'Cell 2.2';
CellValue[OleVariant(h),OleVariant(2)] := 'Cell 2.3';
end;
with Items do
begin
SelectItem[ItemByIndex[1]] := True;
end;
FocusColumnIndex := 2;
EndUpdate();
end
|
887
|
How do I programmatically exclude items from the filter
![](images/exgridq887.png)
with Grid1 do
begin
BeginUpdate();
LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot;
with (IUnknown(Columns.Add('Items')) as EXGRIDLib_TLB.Column) do
begin
DisplayFilterButton := True;
DisplayFilterPattern := False;
FilterList := Integer(EXGRIDLib_TLB.exShowExclude) Or Integer(EXGRIDLib_TLB.exShowFocusItem) Or Integer(EXGRIDLib_TLB.exShowCheckBox);
end;
with Items do
begin
AddItem('Item 1');
AddItem('Item 2');
AddItem('Item 3');
AddItem('Item 4');
end;
with Columns.Item[OleVariant(0)] do
begin
FilterType := Integer(EXGRIDLib_TLB.exFilterExclude) Or Integer(EXGRIDLib_TLB.exFilter);
Filter := 'Item 1|Item 4';
end;
ApplyFilter();
EndUpdate();
end
|
886
|
Using the property Column.FormatColumn I want to display numbers in the numeric format with no decimals - unless the value is NULL then I want to display a blank or empty
![](images/exgridq886.png)
with Grid1 do
begin
BeginUpdate();
with Columns do
begin
(IUnknown(Add('Format')) as EXGRIDLib_TLB.Column).FormatColumn := 'len(value) ? (value format ''0'') : '''' ';
end;
with Items do
begin
AddItem(OleVariant(10));
AddItem(Null);
AddItem(OleVariant(-8));
end;
EndUpdate();
end
|
885
|
How can I change the drop down filter background color
![](images/exgridq885.png)
with Grid1 do
begin
BeginUpdate();
LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot;
Background[EXGRIDLib_TLB.exBackColorFilter] := $ffffff;
with (IUnknown(Columns.Add('Items')) as EXGRIDLib_TLB.Column) do
begin
DisplayFilterButton := True;
DisplayFilterPattern := False;
FilterList := Integer(EXGRIDLib_TLB.exShowFocusItem) Or Integer(EXGRIDLib_TLB.exShowCheckBox) Or Integer(EXGRIDLib_TLB.exSortItemsAsc) Or Integer(EXGRIDLib_TLB.exLeafItems);
end;
with Items do
begin
h := AddItem('Root 1');
InsertItem(h,Null,'Child 1');
InsertItem(h,Null,'Child 2');
ExpandItem[h] := True;
h := AddItem('Root 2');
InsertItem(h,Null,'Child 1');
InsertItem(h,Null,'Child 2');
InsertItem(h,Null,'Child 3');
ExpandItem[h] := True;
end;
EndUpdate();
end
|
884
|
I am using AllowGroupBy property and calling the Column.SortOrder property groups by that column. Is it possible to prevent that, so I have a similar behavior like I click the column's header rather than dragging it to the control's GroupBy bar
![](images/exgridq884.png)
with Grid1 do
begin
with Columns do
begin
Add('First');
Add('Second');
Add('Third');
end;
SortBarVisible := True;
SingleSort := False;
AllowGroupBy := True;
Layout := 'SingleSort = "C0:1";MultipleSort = "C1:2 C2:1"';
end
|
883
|
Calling programatically the Column.SortOrder property adds the column to the sort bar. Is it possible to prevent that, so I have a similar behavior like I click the column's header rather than dragging it to the control's Sort bar
![](images/exgridq883.png)
with Grid1 do
begin
with Columns do
begin
Add('First');
Add('Second');
Add('Third');
end;
SortBarVisible := True;
SingleSort := False;
Layout := 'SingleSort = "C0:1"';
end
|
882
|
How do I restore/clear the HotBackColor/HotForeColor properties
![](images/exgridq882.png)
with Grid1 do
begin
BeginUpdate();
HotBackColor := RGB(0,0,255);
HotForeColor := RGB(255,255,255);
(IUnknown(Columns.Add('Value')) as EXGRIDLib_TLB.Column).Visible := False;
with (IUnknown(Columns.Add('USD')) as EXGRIDLib_TLB.Column) do
begin
Def[EXGRIDLib_TLB.exCellValueFormat] := OleVariant(1);
FormatColumn := 'len(%0) ? ((0:=dbl(%0)) < 10 ? ''<fgcolor=808080><font ;7>'' : ''<b>'') + `USD `+ (=:0 format ``)';
end;
with (IUnknown(Columns.Add('EUR')) as EXGRIDLib_TLB.Column) do
begin
Def[EXGRIDLib_TLB.exCellValueFormat] := OleVariant(1);
FormatColumn := 'len(%0) ? ((0:=0.72*dbl(%0)) < 10 ? ''<fgcolor=808080><font ;7>'' : ''<b>'') + `EUR `+ (=:0 format ``)';
end;
with Items do
begin
AddItem('1.23');
AddItem('2.34');
AddItem('9.94');
AddItem('11.94');
AddItem('1000');
end;
HotBackColor := BackColor;
HotForeColor := ForeColor;
EndUpdate();
end
|
881
|
How do I format a column using a currency, and another column to another currency
![](images/exgridq881.png)
with Grid1 do
begin
(IUnknown(Columns.Add('Value')) as EXGRIDLib_TLB.Column).Visible := False;
with (IUnknown(Columns.Add('USD')) as EXGRIDLib_TLB.Column) do
begin
Def[EXGRIDLib_TLB.exCellValueFormat] := OleVariant(1);
FormatColumn := 'len(%0) ? ((0:=dbl(%0)) < 10 ? ''<fgcolor=808080><font ;7>'' : ''<b>'') + `USD `+ (=:0 format ``)';
end;
with (IUnknown(Columns.Add('EUR')) as EXGRIDLib_TLB.Column) do
begin
Def[EXGRIDLib_TLB.exCellValueFormat] := OleVariant(1);
FormatColumn := 'len(%0) ? ((0:=0.72*dbl(%0)) < 10 ? ''<fgcolor=808080><font ;7>'' : ''<b>'') + `EUR `+ (=:0 format ``)';
end;
with Items do
begin
AddItem('1.23');
AddItem('2.34');
AddItem('9.94');
AddItem('11.94');
AddItem('1000');
end;
end
|
880
|
How can I sort the columns to be displayed on the columns floating bar
![](images/exgridq880.png)
with Grid1 do
begin
ColumnAutoResize := False;
with Columns do
begin
(IUnknown(Add('City')) as EXGRIDLib_TLB.Column).Visible := False;
(IUnknown(Add('Start')) as EXGRIDLib_TLB.Column).Visible := False;
(IUnknown(Add('End')) as EXGRIDLib_TLB.Column).Visible := False;
end;
ColumnsFloatBarVisible := EXGRIDLib_TLB.exColumnsFloatBarVisibleIncludeHiddenColumns;
ColumnsFloatBarSortOrder := EXGRIDLib_TLB.SortAscending;
end
|
879
|
How can I get the column index and the row index of the active cell
![](images/exgridq879.png)
// FocusChanged event - Occurs when a new cell is focused.
procedure TForm1.Grid1FocusChanged(ASender: TObject; );
begin
with Grid1 do
begin
OutputDebugString( 'Active/Focus-Column:' );
OutputDebugString( Columns.Item[OleVariant(FocusColumnIndex)].Caption );
with Items do
begin
OutputDebugString( 'Active/Focus-Row/Item:' );
OutputDebugString( CellCaption[OleVariant(FocusItem),OleVariant(Grid1.FocusColumnIndex)] );
end;
end
end;
with Grid1 do
begin
BeginUpdate();
with Columns do
begin
(IUnknown(Add('C1')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.EditType;
(IUnknown(Add('C2')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.EditType;
(IUnknown(Add('C3')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.EditType;
end;
with Items do
begin
h := AddItem(OleVariant(1));
CellValue[OleVariant(h),OleVariant(1)] := OleVariant(2);
CellValue[OleVariant(h),OleVariant(2)] := OleVariant(3);
h := AddItem(OleVariant(3));
CellValue[OleVariant(h),OleVariant(1)] := OleVariant(1);
CellValue[OleVariant(h),OleVariant(2)] := OleVariant(2);
end;
EndUpdate();
end
|
878
|
How can I add a vertical padding
![](images/exgridq878.png)
with Grid1 do
begin
BeginUpdate();
DrawGridLines := EXGRIDLib_TLB.exAllLines;
with (IUnknown(Columns.Add('Padding')) as EXGRIDLib_TLB.Column) do
begin
Def[EXGRIDLib_TLB.exCellHasCheckBox] := OleVariant(True);
Def[EXGRIDLib_TLB.exCellSingleLine] := OleVariant(False);
Def[EXGRIDLib_TLB.exCellPaddingLeft] := OleVariant(6);
Def[EXGRIDLib_TLB.exCellPaddingRight] := OleVariant(6);
Def[EXGRIDLib_TLB.exCellPaddingTop] := OleVariant(6);
Def[EXGRIDLib_TLB.exCellPaddingBottom] := OleVariant(6);
end;
with Items do
begin
AddItem('padding');
AddItem('padding');
end;
EndUpdate();
end
|
877
|
How can I set item's height individually for every item in the control and also have line breaks in the item caption
![](images/exgridq877.png)
with Grid1 do
begin
BackColorAlternate := RGB(240,240,240);
with (IUnknown(Columns.Add('Lines')) as EXGRIDLib_TLB.Column) do
begin
Def[EXGRIDLib_TLB.exCellValueFormat] := OleVariant(1);
Def[EXGRIDLib_TLB.exCellSingleLine] := OleVariant(False);
end;
ItemsAllowSizing := EXGRIDLib_TLB.exResizeItem;
with Items do
begin
h := AddItem('Line 1<br>Line 2');
ItemMinHeight[h] := 36;
ItemHeight[h] := ItemMinHeight[h];
ItemMaxHeight[h] := ItemMinHeight[h];
h := AddItem('Line 1<br>Line 2');
ItemMinHeight[h] := 48;
ItemHeight[h] := ItemMinHeight[h];
ItemMaxHeight[h] := ItemMinHeight[h];
h := AddItem('Line 1<br>Line 2');
ItemMinHeight[h] := 64;
ItemHeight[h] := ItemMinHeight[h];
ItemMaxHeight[h] := ItemMinHeight[h];
end;
end
|
876
|
The mouse-cursor is shown over the tooltip. Is it possible somehow resolve this (method 2)
![](images/exgridq876.png)
// MouseMove event - Occurs when the user moves the mouse.
procedure TForm1.Grid1MouseMove(ASender: TObject; Button : Smallint;Shift : Smallint;X : Integer;Y : Integer);
begin
with Grid1 do
begin
ShowToolTip('This is bit of text that''s shown when the user hovers the cell','Column',OleVariant(0),'+16','+16');
end
end;
with Grid1 do
begin
Columns.Add('Column');
with Items do
begin
AddItem('tooltip');
end;
end
|
875
|
The mouse-cursor is shown over the tooltip. Is it possible somehow resolve this (method 1)
// ToolTip event - Fired when the control prepares the object's tooltip.
procedure TForm1.Grid1ToolTip(ASender: TObject; Item : HITEM;ColIndex : Integer;var Visible : WordBool;var X : Integer;var Y : Integer;CX : Integer;CY : Integer);
begin
with Grid1 do
begin
X := 0;
Y := 0;
end
end;
with Grid1 do
begin
Columns.Add('Column');
with Items do
begin
CellToolTip[OleVariant(AddItem('tooltip')),OleVariant(0)] := 'This is bit of text that''s shown when the user hovers the cell';
end;
end
|
874
|
How can I add a MIN or MAX field (for date)
![](images/exgridq874.png)
with Grid1 do
begin
BeginUpdate();
(IUnknown(Columns.Add('Text')) as EXGRIDLib_TLB.Column).SortType := EXGRIDLib_TLB.SortDate;
with Items do
begin
AddItem('1/1/2001');
AddItem('12/11/1998');
AddItem('1/20/2014');
AddItem('1/1/2013');
h := AddItem('min(all,dir,date(%0))');
SortableItem[h] := False;
CellValueFormat[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.exTotalField;
CellHAlignment[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.RightAlignment;
FormatCell[OleVariant(h),OleVariant(0)] := '''MIN: ''+value';
h := AddItem('max(all,dir,date(%0))');
SortableItem[h] := False;
CellValueFormat[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.exTotalField;
CellHAlignment[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.RightAlignment;
FormatCell[OleVariant(h),OleVariant(0)] := '''MAX: ''+value';
end;
EndUpdate();
end
|
873
|
How can I add a MIN or MAX field (for text)
![](images/exgridq873.png)
with Grid1 do
begin
BeginUpdate();
(IUnknown(Columns.Add('Text')) as EXGRIDLib_TLB.Column).SortType := EXGRIDLib_TLB.SortString;
with Items do
begin
AddItem('aha');
AddItem('baba');
AddItem('aaha');
AddItem('aka');
h := AddItem('min(all,dir,str(%0))');
SortableItem[h] := False;
CellValueFormat[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.exTotalField;
CellHAlignment[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.RightAlignment;
FormatCell[OleVariant(h),OleVariant(0)] := '''MIN: ''+value';
h := AddItem('max(all,dir,str(%0))');
SortableItem[h] := False;
CellValueFormat[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.exTotalField;
CellHAlignment[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.RightAlignment;
FormatCell[OleVariant(h),OleVariant(0)] := '''MAX: ''+value';
end;
EndUpdate();
end
|
872
|
How can I change the the focus rectangle
![](images/exgridq872.png)
with Grid1 do
begin
BeginUpdate();
VisualAppearance.Add(1,'gBFLBCJwBAEHhEJAAEhABeEGACAADACAxRDgMQBQKAAzQFAYbBlBaERiGQYIJhUAIIRZGMQxXAcMQvDSKQJhGDAADENAxAJCI4DBIgZQNDwZQIkCY4ZDKHIfRzNAASJI' +
'kTQPBKfYDGOLhSh6IJGRpPEIxdJMBr+fZ9QApeoYVj2J4eUCAFBxDRsZw8BiNAbkOi4Jp1f5nVJaFSxCKoSxbNqSBpGCzoJrKdI0R5JES2BAddTLBKzX7tHArLgSJ5dS' +
'rLMrwSKcRR1HSbIDyGaMUiCSqGVjWNZ5FREM46AAGbDgMILEgOZpoYDFVTZTKFCS7I6Eb40CCbCyPJQAabgWo4KAAZThNi7QAua4bTr7HqibLAexaJDOc4HVSgMLlIYE' +
'kIeg2iybAjDkfhMFuHY7mQT4xB0TBnFoUQ6i+cg2j2SIvHqVZIl8cB+BwTgPA4NRdjycg2FoHhuAMUZuHGUAwCECQUAaEYMHQHRHCGFRZEQAABO2AwRFCWQJAoGxECWT' +
'BHkGBxpg8RhYBMbJbD+TBzByfwwAwCIOCWCQiGiJgogqYh4hYIQ/k2cx9gEYQAAiRgqgsYx4mYLIOiOCMjjCTA4iScw8mMOQWEaEZkGkDgpguUIYm4SITmUCQaDuExjg' +
'kRhWhQJQ0A4ToVmWSQWFkAAljkdhiheZgZgoXIZCUWYaF2GgihmKhrg4JRJjYboVmaSIiHOHQnAkahph2ZYJmQAAxAwSQKESHwkFkKgoiAIxIHoPIimOOg2DiCgoiQJR' +
'QTYQxwn8MgMgoMoPiaYoaGCfw4A4CJNAkOpcGQBCAg==');
Background[EXGRIDLib_TLB.exShowFocusRect] := $1000000;
with (IUnknown(Columns.Add('Check')) as EXGRIDLib_TLB.Column) do
begin
Def[EXGRIDLib_TLB.exCellPaddingLeft] := OleVariant(2);
Def[EXGRIDLib_TLB.exCellHasCheckBox] := OleVariant(True);
end;
SelForeColor := ForeColor;
SelBackColor := BackColor;
DefaultItemHeight := 22;
ShowFocusRect := True;
with Items do
begin
AddItem('');
AddItem('');
end;
EndUpdate();
end
|
871
|
Can each cell have their own dropdown lists that contain "different list item values" for each cell, not predefined for the entire column
![](images/exgridq871.png)
with Grid1 do
begin
BeginUpdate();
with (IUnknown(Columns.Add('Column/Cell-Same')) as EXGRIDLib_TLB.Column).Editor do
begin
EditType := EXGRIDLib_TLB.DropDownListType;
AddItem(0,'Zero',Null);
AddItem(1,'One',Null);
AddItem(2,'Two',Null);
end;
with (IUnknown(Columns.Add('Column/Cell-Different')) as EXGRIDLib_TLB.Column).Editor do
begin
EditType := EXGRIDLib_TLB.EditType;
end;
with Items do
begin
AddItem(Null);
h := AddItem(OleVariant(0));
with CellEditor[OleVariant(h),OleVariant(1)] do
begin
EditType := EXGRIDLib_TLB.DropDownListType;
AddItem(3,'Three',Null);
AddItem(4,'Four',Null);
end;
CellValue[OleVariant(h),OleVariant(1)] := OleVariant(3);
AddItem(Null);
h := AddItem(OleVariant(0));
with CellEditor[OleVariant(h),OleVariant(1)] do
begin
EditType := EXGRIDLib_TLB.CheckListType;
AddItem(1,'Single',Null);
AddItem(2,'Double',Null);
end;
CellValue[OleVariant(h),OleVariant(1)] := OleVariant(3);
end;
EndUpdate();
end
|
870
|
How can I specify just a few fonts in a FontType editor
![](images/exgridq870.png)
with Grid1 do
begin
BeginUpdate();
DefaultItemHeight := 22;
DrawGridLines := EXGRIDLib_TLB.exRowLines;
with (IUnknown(Columns.Add('Fonts')) as EXGRIDLib_TLB.Column).Editor do
begin
EditType := EXGRIDLib_TLB.FontType;
ClearItems();
AddItem(0,'Calibri',Null);
AddItem(1,'Arial',Null);
AddItem(2,'Rockwell',Null);
AddItem(3,'Tahoma',Null);
SortItems(OleVariant(True),Null);
DropDownRows := 4;
end;
with Items do
begin
AddItem('Tahoma');
end;
EndUpdate();
end
|
869
|
How do you embed HTML options into the anchor click string
![](images/exgridq869.png)
// AnchorClick event - Occurs when an anchor element is clicked.
procedure TForm1.Grid1AnchorClick(ASender: TObject; AnchorID : WideString;Options : WideString);
begin
with Grid1 do
begin
OutputDebugString( AnchorID );
OutputDebugString( Options );
end
end;
with Grid1 do
begin
BeginUpdate();
with Columns do
begin
(IUnknown(Add('Car')) as EXGRIDLib_TLB.Column).Def[EXGRIDLib_TLB.exCellValueFormat] := OleVariant(1);
end;
with Items do
begin
AddItem('<a mazda_1;options for 1>Mazda <b>1</b></a>');
AddItem('<a mazda_2;options for 2>Mazda <b>2</b></a>');
AddItem('<a mazda_3;options for 3a>Mazda <b>3.a</b></a>');
AddItem('<a mazda_3;options for 3b>Mazda <b>3.b</b></a>');
end;
EndUpdate();
end
|
868
|
How do I add a checkbox column (method 2)
![](images/exgridq868.png)
// CellStateChanged event - Fired after cell's state has been changed.
procedure TForm1.Grid1CellStateChanged(ASender: TObject; Item : HITEM;ColIndex : Integer);
begin
with Grid1 do
begin
OutputDebugString( 'CheckBox Changed:' );
OutputDebugString( Items.CellState[OleVariant(Item),OleVariant(ColIndex)] );
end
end;
with Grid1 do
begin
BeginUpdate();
(IUnknown(Columns.Add('Check')) as EXGRIDLib_TLB.Column).Def[EXGRIDLib_TLB.exCellHasCheckBox] := OleVariant(True);
with Items do
begin
CellState[OleVariant(AddItem('Check 1')),OleVariant(0)] := 0;
CellState[OleVariant(AddItem('Check 2')),OleVariant(0)] := 1;
CellState[OleVariant(AddItem('Check 3')),OleVariant(0)] := 0;
CellState[OleVariant(AddItem('Check 4')),OleVariant(0)] := 1;
end;
EndUpdate();
end
|
867
|
How do I add a checkbox column (method 1)
![](images/exgridq867.png)
// Change event - Occurs when the user changes the cell's content.
procedure TForm1.Grid1Change(ASender: TObject; Item : HITEM;ColIndex : Integer;var NewValue : OleVariant);
begin
with Grid1 do
begin
OutputDebugString( 'CheckBox Changed:' );
OutputDebugString( NewValue );
end
end;
with Grid1 do
begin
BeginUpdate();
with (IUnknown(Columns.Add('Check')) as EXGRIDLib_TLB.Column) do
begin
with Editor do
begin
EditType := EXGRIDLib_TLB.CheckValueType;
Option[EXGRIDLib_TLB.exCheckValue2] := OleVariant(1);
end;
end;
with Items do
begin
AddItem(OleVariant(0));
AddItem(OleVariant(1));
AddItem(OleVariant(0));
AddItem(OleVariant(1));
end;
EndUpdate();
end
|
866
|
How do I change the progress bar's appearance
![](images/exgridq866.png)
with Grid1 do
begin
with VisualAppearance do
begin
Add(1,'c:\exontrol\images\normal.ebn');
Add(2,'c:\exontrol\images\pushed.ebn');
end;
var_Editor := (IUnknown(Columns.Add('Progress')) as EXGRIDLib_TLB.Column).Editor;
with var_Editor do
begin
EditType := EXGRIDLib_TLB.ProgressBarType;
Option[EXGRIDLib_TLB.exProgressBarBackColor] := OleVariant(16777216);
Option[EXGRIDLib_TLB.exProgressBarMarkTicker] := OleVariant(33554432);
end;
Items.AddItem(OleVariant(33));
end
|
865
|
I have the rows with different background color, and when I select the item it takes the color of the SelBackColor, and therefore is no longer visible behind the color. Is there any option to make the item's color being visible (method 3)
![](images/exgridq865.png)
with Grid1 do
begin
BeginUpdate();
VisualAppearance.Add(1,'gBFLBCJwBAEHhEJAEGg4BVEIQAAYAQGKIYBkAKBQAGaAoDDMOQwQwAAxjGKEEwsACEIrjKCRShyCYZRhGcTSBCIZBqEqSZLiEZRQCWIAzATGYBRfIUEgjBM6ExwG78eg' +
'BHp/ZpkACIJJAaRjHQdJxGKKMQB9DIhCZpeKhWgkKIJBzOEyBRC4ERBGqNGrsIgLEqWZpnWhaNpWXYTLyBN64LhuK46g53O6wLxvK6hEr2dJ/YBcIAOfghf4NQ7EMRxL' +
'C8Mw3BDvYDkOAABAIgI=');
SelBackColor := $1fffffe;
ShowFocusRect := False;
Columns.Add('Items');
with Items do
begin
ItemBackColor[AddItem('red')] := $ff;
ItemBackColor[AddItem('blue')] := $ff0000;
ItemBackColor[AddItem('green')] := $ff00;
end;
EndUpdate();
end
|
864
|
I have the rows with different background color, and when I select the item it takes the color of the SelBackColor, and therefore is no longer visible behind the color. Is there any option to make the item's color being visible (method 2)
![](images/exgridq864.png)
with Grid1 do
begin
BeginUpdate();
SelBackMode := EXGRIDLib_TLB.exTransparent;
ShowFocusRect := False;
Columns.Add('Items');
with Items do
begin
ItemBackColor[AddItem('red')] := $ff;
ItemBackColor[AddItem('blue')] := $ff0000;
ItemBackColor[AddItem('green')] := $ff00;
end;
EndUpdate();
end
|
863
|
I have the rows with different background color, and when I select the item it takes the color of the SelBackColor, and therefore is no longer visible behind the color. Is there any option to make the item's color being visible (method 1)
![](images/exgridq863.png)
with Grid1 do
begin
BeginUpdate();
SelBackColor := BackColor;
SelForeColor := ForeColor;
ShowFocusRect := True;
Columns.Add('Items');
with Items do
begin
ItemBackColor[AddItem('red')] := $ff;
ItemBackColor[AddItem('blue')] := $ff0000;
ItemBackColor[AddItem('green')] := $ff00;
end;
EndUpdate();
end
|
862
|
The BeforeExpandItem event is fired when clicking the drop down filter button. What we can do to prevent that
![](images/exgridq862.png)
// BeforeExpandItem event - Fired before an item is about to be expanded (collapsed).
procedure TForm1.Grid1BeforeExpandItem(ASender: TObject; Item : HITEM;var Cancel : OleVariant);
begin
with Grid1 do
begin
OutputDebugString( 'BeforeExpandItem' );
OutputDebugString( Item );
Items.InsertItem(Item,Null,'new child');
end
end;
with Grid1 do
begin
BeginUpdate();
LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot;
with Columns do
begin
with (IUnknown(Add('Items')) as EXGRIDLib_TLB.Column) do
begin
DisplayFilterButton := True;
FilterList := EXGRIDLib_TLB.exRootItems;
end;
end;
with Items do
begin
ItemHasChildren[InsertItem(Null,Null,'Group 1')] := True;
ItemHasChildren[InsertItem(Null,Null,'Group 2')] := True;
end;
EndUpdate();
end
|
861
|
How can I change the shape of the line to be shown when user drag and drop data over the control, EBN
![](images/exgridq861.png)
// OLEStartDrag event - Occurs when the OLEDrag method is called.
procedure TForm1.Grid1OLEStartDrag(ASender: TObject; Data : IExDataObject;var AllowedEffects : Integer);
begin
// Data.SetData("data to be dragged")
end;
with Grid1 do
begin
OLEDropMode := EXGRIDLib_TLB.exOLEDropManual;
VisualAppearance.Add(1,'C:\Program Files\Exontrol\ExList\Sample\VB\DragDrop\insert_bottom.ebn');
Background[EXGRIDLib_TLB.exListOLEDropPosition] := $1000000;
Columns.Add('Default');
with Items do
begin
AddItem('Item 1');
AddItem('Item 2');
end;
end
|
860
|
How can I highlight the item from cursor when the user drag and drop data over the control
![](images/exgridq860.png)
// OLEStartDrag event - Occurs when the OLEDrag method is called.
procedure TForm1.Grid1OLEStartDrag(ASender: TObject; Data : IExDataObject;var AllowedEffects : Integer);
begin
// Data.SetData("data to be dragged")
end;
with Grid1 do
begin
OLEDropMode := EXGRIDLib_TLB.exOLEDropManual;
Background[EXGRIDLib_TLB.exListOLEDropPosition] := $1;
Columns.Add('Default');
with Items do
begin
AddItem('Item 1');
AddItem('Item 2');
end;
end
|
859
|
Is it possible to always show the editor for all cells at all times
![](images/exgridq859.png)
// AddItem event - Occurs after a new Item has been inserted to Items collection.
procedure TForm1.Grid1AddItem(ASender: TObject; Item : HITEM);
begin
with Grid1 do
begin
Items.CellEditorVisible[OleVariant(Item),OleVariant(0)] := EXGRIDLib_TLB.exEditorVisible;
Items.CellEditorVisible[OleVariant(Item),OleVariant(1)] := EXGRIDLib_TLB.exEditorVisible;
end
end;
// EditOpen event - Occurs when the edit operation starts.
procedure TForm1.Grid1EditOpen(ASender: TObject; );
begin
with Grid1 do
begin
with Items do
begin
v := CellValue[OleVariant(FocusItem),OleVariant(0)];
c := CellCaption[OleVariant(FocusItem),OleVariant(0)];
end;
with Columns.Item[OleVariant(1)].Editor do
begin
ClearItems();
AddItem(v,c,Null);
end;
end
end;
with Grid1 do
begin
BeginUpdate();
with (IUnknown(Columns.Add('DropDownList')) as EXGRIDLib_TLB.Column) do
begin
with Editor do
begin
EditType := EXGRIDLib_TLB.DropDownListType;
AddItem(1,'First',Null);
AddItem(2,'Second',Null);
AddItem(3,'Third',Null);
end;
end;
DrawGridLines := EXGRIDLib_TLB.exAllLines;
(IUnknown(Columns.Add('DropDownList-Related')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.DropDownListType;
with Items do
begin
CellValue[OleVariant(AddItem(OleVariant(1))),OleVariant(1)] := OleVariant(-1);
CellValue[OleVariant(AddItem(OleVariant(2))),OleVariant(1)] := OleVariant(-1);
CellValue[OleVariant(AddItem(OleVariant(3))),OleVariant(1)] := OleVariant(-1);
LockedItemCount[EXGRIDLib_TLB.exBottom] := 1;
h := LockedItem[EXGRIDLib_TLB.exBottom,0];
ItemDivider[h] := 0;
ItemDividerLineAlignment[h] := EXGRIDLib_TLB.DividerTop;
CellEditorVisible[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.exEditorHidden;
CellSingleLine[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.exCaptionWordWrap;
CellValueFormat[OleVariant(h),OleVariant(0)] := EXGRIDLib_TLB.exHTML;
CellValue[OleVariant(h),OleVariant(0)] := 'The drop down editor in the second column is filled during the <b>EditOpen event</b>, and the values are based on the selection ' +
'on the first column.';
end;
EndUpdate();
end
|
858
|
How do I set a computated cell individually
![](images/exgridq858.png)
with Grid1 do
begin
BeginUpdate();
Columns.Add('Number');
Columns.Add('Format');
with Items do
begin
h := AddItem('1.23');
CellValueFormat[OleVariant(h),OleVariant(1)] := Integer(EXGRIDLib_TLB.exComputedField) Or Integer(EXGRIDLib_TLB.exHTML);
CellValue[OleVariant(h),OleVariant(1)] := '2 * %0 + ` <font ;6><fgcolor=808080>(2 * Number)`';
h := AddItem('1.23');
CellValueFormat[OleVariant(h),OleVariant(1)] := Integer(EXGRIDLib_TLB.exComputedField) Or Integer(EXGRIDLib_TLB.exHTML);
CellValue[OleVariant(h),OleVariant(1)] := '3 * %0 + ` <font ;6><fgcolor=808080>(3 * Number)`';
h := AddItem('1.23');
CellValueFormat[OleVariant(h),OleVariant(1)] := Integer(EXGRIDLib_TLB.exComputedField) Or Integer(EXGRIDLib_TLB.exHTML);
CellValue[OleVariant(h),OleVariant(1)] := 'currency(%0) + ` <font ;6><fgcolor=808080>( Currency(Number) )`';
end;
EndUpdate();
end
|
857
|
Is it possible to assign a different editor for some cells
![](images/exgridq857.png)
with Grid1 do
begin
with (IUnknown(Columns.Add('Column - DropDownList')) as EXGRIDLib_TLB.Column).Editor do
begin
EditType := EXGRIDLib_TLB.DropDownListType;
AddItem(1,'First item',Null);
AddItem(2,'Second item',Null);
AddItem(3,'Third item',Null);
end;
(IUnknown(Columns.Add('Cell - DropDownList')) as EXGRIDLib_TLB.Column).Def[EXGRIDLib_TLB.exCellValueFormat] := OleVariant(1);
with Items do
begin
h := AddItem(OleVariant(1));
with CellEditor[OleVariant(h),OleVariant(1)] do
begin
EditType := EXGRIDLib_TLB.DropDownListType;
AddItem(1,'<b>First</b> item',Null);
AddItem(2,'<b>Second</b> item',Null);
AddItem(3,'<b>Third</b> item',Null);
AddItem(4,'<b>Forth</b> item',Null);
end;
CellValue[OleVariant(h),OleVariant(1)] := OleVariant(2);
h := AddItem(OleVariant(2));
with CellEditor[OleVariant(h),OleVariant(1)] do
begin
EditType := EXGRIDLib_TLB.DropDownListType;
AddItem(1,'<b>Aka First</b> item',Null);
AddItem(2,'<b>Aka Second</b> item',Null);
AddItem(3,'<b>Aka Third</b> item',Null);
AddItem(4,'<b>Aka Forth</b> item',Null);
end;
CellValue[OleVariant(h),OleVariant(1)] := OleVariant(2);
end;
end
|
856
|
Is it possible to define the keys of the drop down values to be strings rather than numeric values
![](images/exgridq856.png)
// Change event - Occurs when the user changes the cell's content.
procedure TForm1.Grid1Change(ASender: TObject; Item : HITEM;ColIndex : Integer;var NewValue : OleVariant);
begin
with Grid1 do
begin
OutputDebugString( 'NewValue is' );
OutputDebugString( NewValue );
end
end;
with Grid1 do
begin
with (IUnknown(Columns.Add('DropDownList-String')) as EXGRIDLib_TLB.Column).Editor do
begin
EditType := EXGRIDLib_TLB.DropDownListType;
AddItem(1,'NYC|New York City',Null);
AddItem(2,'CJN|Cluj Napoca',Null);
end;
with (IUnknown(Columns.Add('DropDownList-Numeric')) as EXGRIDLib_TLB.Column).Editor do
begin
EditType := EXGRIDLib_TLB.DropDownListType;
AddItem(1,'New York City',Null);
AddItem(2,'Cluj Napoca',Null);
end;
with Items do
begin
CellValue[OleVariant(AddItem('NYC')),OleVariant(1)] := OleVariant(2);
end;
end
|
855
|
The Change event gets me the today date. How can I find what user typed
![](images/exgridq855.png)
// Change event - Occurs when the user changes the cell's content.
procedure TForm1.Grid1Change(ASender: TObject; Item : HITEM;ColIndex : Integer;var NewValue : OleVariant);
begin
with Grid1 do
begin
OutputDebugString( 'NewValue:' );
OutputDebugString( NewValue );
OutputDebugString( 'EditingValue:' );
OutputDebugString( EditingText );
end
end;
with Grid1 do
begin
BeginUpdate();
(IUnknown(Columns.Add('Edit')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.DateType;
Items.AddItem('1/1/2001');
EndUpdate();
end
|
854
|
I have an edit field, when going to edit mode, the rightmost part is shown. Is it possible to show the left part instead
![](images/exgridq854.png)
with Grid1 do
begin
BeginUpdate();
with (IUnknown(Columns.Add('Edit')) as EXGRIDLib_TLB.Column) do
begin
Width := 64;
AllowSizing := False;
with Editor do
begin
EditType := EXGRIDLib_TLB.MaskType;
Mask := ';;;rich';
end;
end;
Columns.Add('Empty');
with Items do
begin
AddItem('This is a bit ot long text');
AddItem('');
end;
EndUpdate();
end
|
853
|
I have a drop down field, the control shows the rightmost part of the selected caption. Is it possible to show the left part
![](images/exgridq853.png)
with Grid1 do
begin
BeginUpdate();
with (IUnknown(Columns.Add('DropDown')) as EXGRIDLib_TLB.Column) do
begin
Width := 64;
AllowSizing := False;
with Editor do
begin
DropDownAlignment := EXGRIDLib_TLB.AlignmentEnum($20);
EditType := EXGRIDLib_TLB.DropDownType;
AddItem(1,'First item. This is a bit ot long text',Null);
AddItem(2,'Second item. This is a bit ot long text',Null);
AddItem(3,'Third item. This is a bit ot long text',Null);
Mask := ';;;rich';
end;
end;
with (IUnknown(Columns.Add('PickEdit')) as EXGRIDLib_TLB.Column) do
begin
Width := 64;
AllowSizing := False;
with Editor do
begin
DropDownAlignment := EXGRIDLib_TLB.AlignmentEnum($20);
EditType := EXGRIDLib_TLB.PickEditType;
AddItem(1,'First item. This is a bit ot long text',Null);
AddItem(2,'Second item. This is a bit ot long text',Null);
AddItem(3,'Third item. This is a bit ot long text',Null);
Mask := ';;;rich';
end;
end;
Columns.Add('Empty');
with Items do
begin
CellValue[OleVariant(AddItem('First item. This is a bit ot long text')),OleVariant(1)] := 'Second item. This is a bit ot long text';
h := AddItem('First item. This is a bit ot long text');
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
DropDownAlignment := EXGRIDLib_TLB.AlignmentEnum($20);
EditType := EXGRIDLib_TLB.DropDownType;
AddItem(1,'First item. This is a bit ot long text',Null);
AddItem(2,'Second item. This is a bit ot long text',Null);
AddItem(3,'Third item. This is a bit ot long text',Null);
end;
CellValue[OleVariant(h),OleVariant(1)] := 'Second item. This is a bit ot long text';
with CellEditor[OleVariant(h),OleVariant(1)] do
begin
DropDownAlignment := EXGRIDLib_TLB.AlignmentEnum($20);
EditType := EXGRIDLib_TLB.PickEditType;
AddItem(1,'First item. This is a bit ot long text',Null);
AddItem(2,'Second item. This is a bit ot long text',Null);
AddItem(3,'Third item. This is a bit ot long text',Null);
end;
end;
EndUpdate();
end
|
852
|
Is there a property for the back color of the dropdown field
![](images/exgridq852.png)
with Grid1 do
begin
BeginUpdate();
with (IUnknown(Columns.Add('Date')) as EXGRIDLib_TLB.Column).Editor do
begin
EditType := EXGRIDLib_TLB.DateType;
Option[EXGRIDLib_TLB.exDropDownBackColor] := OleVariant(15790320);
Option[EXGRIDLib_TLB.exDropDownForeColor] := OleVariant(65793);
end;
Items.AddItem('1/1/2001');
EndUpdate();
end
|
851
|
Is it possible to change a back color of the field/cell when it takes a focus
![](images/exgridq851.png)
// EditClose event - Occurs when the edit operation ends.
procedure TForm1.Grid1EditClose(ASender: TObject; );
begin
with Grid1 do
begin
with Items do
begin
ClearCellBackColor(OleVariant(FocusItem),OleVariant(Grid1.FocusColumnIndex));
end;
end
end;
// EditOpen event - Occurs when the edit operation starts.
procedure TForm1.Grid1EditOpen(ASender: TObject; );
begin
with Grid1 do
begin
with Items do
begin
CellBackColor[OleVariant(FocusItem),OleVariant(Grid1.FocusColumnIndex)] := $ff;
end;
with Items do
begin
CellValue[OleVariant(FocusItem),OleVariant(Grid1.FocusColumnIndex)] := Grid1.Items.CellValue[OleVariant(Grid1.Items.FocusItem),OleVariant(Grid1.FocusColumnIndex)];
end;
end
end;
with Grid1 do
begin
FullRowSelect := EXGRIDLib_TLB.exColumnSel;
(IUnknown(Columns.Add('C1')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.EditType;
(IUnknown(Columns.Add('C2')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.EditType;
with Items do
begin
CellValue[OleVariant(AddItem('v1')),OleVariant(1)] := 'v2';
CellValue[OleVariant(AddItem('v3')),OleVariant(1)] := 'v4';
end;
end
|
850
|
How can I display the current date mask, but still allow empty values
![](images/exgridq850.png)
with Grid1 do
begin
BeginUpdate();
CauseValidateValue := EXGRIDLib_TLB.exValidateCell;
FullRowSelect := EXGRIDLib_TLB.exColumnSel;
DrawGridLines := EXGRIDLib_TLB.exRowLines;
with (IUnknown(Columns.Add('Date')) as EXGRIDLib_TLB.Column).Editor do
begin
EditType := EXGRIDLib_TLB.DateType;
Mask := '!99/99/9999;1;;empty=1,validateas=1,invalid=Invalid date\, for the input mask <br><b>''<%mask%>''</b>!,warning=Invalid character!,' +
'select=4,overtype';
end;
with Items do
begin
AddItem(Null);
AddItem('1/1/2001');
AddItem(Null);
end;
EndUpdate();
end
|
849
|
How can I align the days in a DateType editor
![](images/exgridq849.png)
with Grid1 do
begin
Columns.Add('DropDown');
with Items do
begin
with CellEditor[OleVariant(AddItem('1/1/2001')),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.DateType;
DropDownAlignment := EXGRIDLib_TLB.RightAlignment;
end;
with CellEditor[OleVariant(AddItem('1/1/2001')),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.DateType;
DropDownAlignment := EXGRIDLib_TLB.CenterAlignment;
end;
with CellEditor[OleVariant(AddItem('1/1/2001')),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.DateType;
DropDownAlignment := EXGRIDLib_TLB.LeftAlignment;
end;
with CellEditor[OleVariant(AddItem('1/1/2001')),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.DateType;
DropDownAlignment := EXGRIDLib_TLB.AlignmentEnum($20);
end;
with CellEditor[OleVariant(AddItem('1/1/2001')),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.DateType;
DropDownAlignment := EXGRIDLib_TLB.AlignmentEnum($20 Or Integer(EXGRIDLib_TLB.CenterAlignment));
end;
with CellEditor[OleVariant(AddItem('1/1/2001')),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.DateType;
DropDownAlignment := EXGRIDLib_TLB.AlignmentEnum($20 Or Integer(EXGRIDLib_TLB.RightAlignment));
end;
end;
end
|
848
|
How can I align the drop down portion rather the inside captions
![](images/exgridq848.png)
with Grid1 do
begin
(IUnknown(Columns.Add('DropDown')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.DateType;
with Items do
begin
with CellEditor[OleVariant(AddItem('1/1/2001')),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.DateType;
DropDownAlignment := EXGRIDLib_TLB.AlignmentEnum($20);
end;
with CellEditor[OleVariant(AddItem('1/1/2001')),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.DateType;
DropDownAlignment := EXGRIDLib_TLB.AlignmentEnum($10);
end;
AddItem('1/1/2001');
end;
end
|
847
|
Is it possible to show a message that the field is empty
![](images/exgridq847.png)
with Grid1 do
begin
DrawGridLines := EXGRIDLib_TLB.exRowLines;
FullRowSelect := EXGRIDLib_TLB.exColumnSel;
with (IUnknown(Columns.Add('Float')) as EXGRIDLib_TLB.Column) do
begin
with Editor do
begin
EditType := EXGRIDLib_TLB.MaskType;
Mask := ';;;float,digits=0,grouping=,invalid=empty,warning=invalid character';
end;
end;
Items.AddItem(OleVariant(192278));
Items.AddItem(OleVariant(1000));
end
|
846
|
How can I mask a date
![](images/exgridq846.png)
with Grid1 do
begin
BeginUpdate();
CauseValidateValue := EXGRIDLib_TLB.exValidateCell;
FullRowSelect := EXGRIDLib_TLB.exColumnSel;
DrawGridLines := EXGRIDLib_TLB.exRowLines;
Columns.Add('Date');
Columns.Add('Mask');
with Items do
begin
h := AddItem('1/1/2001');
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.DateType;
Mask := '{1,12}/{1,31}/{1950,2050};1;;select=1,warning=Invalid character!,invalid=Invalid date\, for the input mask <br><b>''<%mask%>''</b>' +
'!,validateas=1';
end;
CellValue[OleVariant(h),OleVariant(1)] := OleVariant(CellEditor[OleVariant(h),OleVariant(0)].Mask);
h := AddItem('1/1/2001');
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.DateType;
Mask := '!99/99/9999;1;;empty,validateas=1,invalid=Invalid date\, for the input mask <br><b>''<%mask%>''</b>!,warning=Invalid character!,se' +
'lect=4,overtype';
end;
CellValue[OleVariant(h),OleVariant(1)] := OleVariant(CellEditor[OleVariant(h),OleVariant(0)].Mask);
h := AddItem('1/1/2001');
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.DateType;
Mask := '!99/99/9999;;;empty,validateas=1,invalid=Invalid date\, for the input mask <br><b>''<%mask%>''</b>!,warning=Invalid character!,sel' +
'ect=4,overtype';
end;
CellValue[OleVariant(h),OleVariant(1)] := OleVariant(CellEditor[OleVariant(h),OleVariant(0)].Mask);
h := AddItem('1/1/2001');
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.DateType;
Mask := '!99/99/9999;; ;select=4,overtype,empty,warning=Invalid character!,invalid=Invalid date\, for the input mask <br><b>''<%mask%>''</b' +
'>!,validateas=1';
end;
CellValue[OleVariant(h),OleVariant(1)] := OleVariant(CellEditor[OleVariant(h),OleVariant(0)].Mask);
h := AddItem('1/1/2001');
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.DateType;
Mask := '![0-9 ][0-9 ]/[0-9 ][0-9 ]/[0-9 ][0-9 ][0-9 ][0-9 ];1;;empty,validateas=1,invalid=Invalid date\, for the input mask <br><b>''<%ma' +
'sk%>''</b>!,warning=Invalid character!,select=4,leading= ';
end;
CellValue[OleVariant(h),OleVariant(1)] := OleVariant(CellEditor[OleVariant(h),OleVariant(0)].Mask);
h := AddItem('1/1/2001');
FormatCell[OleVariant(h),OleVariant(0)] := 'len(value) ? shortdateF(value) : ``';
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.DateType;
Mask := '!99/99/9999;1;;empty,validateas=1,invalid=Invalid date\, for the input mask <br><b>''<%mask%>''</b>!,warning=Invalid character!,se' +
'lect=4,overtype,leading';
end;
CellValue[OleVariant(h),OleVariant(1)] := OleVariant(CellEditor[OleVariant(h),OleVariant(0)].Mask);
h := AddItem('1/1/2001');
FormatCell[OleVariant(h),OleVariant(0)] := 'len(value) ? shortdateF(value) : ``';
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.DateType;
Mask := '!00/00/0000;1;;empty,validateas=1,invalid=Invalid date\, for the input mask <br><b>''<%mask%>''</b>!,warning=Invalid character!,se' +
'lect=4,overtype,leading';
end;
CellValue[OleVariant(h),OleVariant(1)] := OleVariant(CellEditor[OleVariant(h),OleVariant(0)].Mask);
h := AddItem('1/1/2001');
FormatCell[OleVariant(h),OleVariant(0)] := 'len(value) ? shortdateF(value) : ``';
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.DateType;
Mask := '!00/00/0000;;0;empty,validateas=1,invalid=Invalid date\, for the input mask <br><b>''<%mask%>''</b>!,warning=Invalid character!,se' +
'lect=4,overtype';
end;
CellValue[OleVariant(h),OleVariant(1)] := OleVariant(CellEditor[OleVariant(h),OleVariant(0)].Mask);
h := AddItem('1/1/2001');
FormatCell[OleVariant(h),OleVariant(0)] := 'len(value) ? shortdateF(value) : ``';
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.DateType;
Mask := '!00/00/0000;;;empty,validateas=1,invalid=Invalid date\, for the input mask <br><b>''<%mask%>''</b>!,warning=Invalid character!,sel' +
'ect=1,overtype';
end;
CellValue[OleVariant(h),OleVariant(1)] := OleVariant(CellEditor[OleVariant(h),OleVariant(0)].Mask);
end;
EndUpdate();
end
|
845
|
How can I display and edit an integer number to show grouping digits too ( no decimals)
![](images/exgridq845.png)
with Grid1 do
begin
with (IUnknown(Columns.Add('Float')) as EXGRIDLib_TLB.Column) do
begin
FormatColumn := 'value format `0`';
with Editor do
begin
EditType := EXGRIDLib_TLB.MaskType;
Mask := ';;;float,digits=0';
end;
end;
Items.AddItem(OleVariant(192278));
end
|
844
|
How can I display and edit a float number to show grouping digits too
![](images/exgridq844.png)
with Grid1 do
begin
with (IUnknown(Columns.Add('Float')) as EXGRIDLib_TLB.Column) do
begin
FormatColumn := 'value format ``';
with Editor do
begin
EditType := EXGRIDLib_TLB.MaskType;
Mask := ';;;float';
end;
end;
Items.AddItem(OleVariant(192278));
end
|
843
|
How can I mask a phone number
![](images/exgridq843.png)
with Grid1 do
begin
CauseValidateValue := EXGRIDLib_TLB.exValidateCell;
DrawGridLines := EXGRIDLib_TLB.exRowLines;
FullRowSelect := EXGRIDLib_TLB.exColumnSel;
(IUnknown(Columns.Add('Phone')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.MaskType;
with Items do
begin
h := AddItem(Null);
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.MaskType;
Mask := '!(999) 000 0000;1;;select=1,empty,overtype,warning=invalid characer,invalid=The value you entered isn''t appropriate for the inpu' +
't mask <b>''<%mask%>''</b> specified for this field.';
end;
h := AddItem('0123');
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.MaskType;
Mask := '!(999) 000 0000;2;;select=4';
end;
h := AddItem('0123');
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.MaskType;
Mask := '`Phone: `!(999) 000-0000';
end;
h := AddItem('(074) 876-1222');
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.MaskType;
Mask := '!(999) 000-0000;0';
end;
end;
end
|
842
|
Is it possible to display the ColorType fields using RGB format
![](images/exgridq842.png)
with Grid1 do
begin
(IUnknown(Columns.Add('Color')) as EXGRIDLib_TLB.Column).Editor.EditType := EXGRIDLib_TLB.ColorType;
with Items do
begin
AddItem(OleVariant(255));
h := AddItem(OleVariant(255));
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.ColorType;
Mask := '`RGB(`{0,255}\,{0,255}\,{0,255}`)`;;0';
end;
h := AddItem(OleVariant(255));
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.ColorType;
Mask := '`&H`XXXXXXXX`&`;;0;overtype,insertype,warning=Wrong!';
end;
h := AddItem(OleVariant(255));
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.ColorType;
Mask := '`0x`XX `0x`XX `0x`XX;;0;overtype,insertype,warning=Wrong!';
end;
h := AddItem(OleVariant(255));
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.ColorType;
Mask := 'R{0,255} G{0,255} B{0,255};;0;overtype,insertype,warning=Wrong!';
end;
h := AddItem(OleVariant(255));
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.ColorType;
Mask := '`(hexa) RGB 0x`XXXXXX;;0;overtype,insertype,warning=Wrong!';
end;
h := AddItem(OleVariant(255));
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.ColorType;
Mask := '`(decimal) Red: `{0,255}` Green: `{0,255}` Blue: `{0,255};;0;overtype,insertype,warning=Wrong!';
end;
h := AddItem(OleVariant(255));
with CellEditor[OleVariant(h),OleVariant(0)] do
begin
EditType := EXGRIDLib_TLB.ColorType;
Mask := '`(combine) Red: `{0,255}` Green: 0x`XX` Blue: `{0,255};;0;overtype,insertype,warning=Wrong!';
end;
end;
end
|
841
|
How can I add the ExComboBox as an user editor
![](images/exgridq841.png)
// UserEditorClose event - Fired the user editor is about to be opened.
procedure TForm1.Grid1UserEditorClose(ASender: TObject; Object : IDispatch;Item : HITEM;ColIndex : Integer);
begin
// Items.CellValue(Item,ColIndex) = Object.Value
end;
// UserEditorOleEvent event - Occurs when an user editor fires an event.
procedure TForm1.Grid1UserEditorOleEvent(ASender: TObject; Object : IDispatch;Ev : IOleEvent;var CloseEditor : WordBool;Item : HITEM;ColIndex : Integer);
begin
with Grid1 do
begin
OutputDebugString( Ev );
end
end;
// UserEditorOpen event - Occurs when an user editor is about to be opened.
procedure TForm1.Grid1UserEditorOpen(ASender: TObject; Object : IDispatch;Item : HITEM;ColIndex : Integer);
begin
// Object.Value = Me.Items.CellValue(Item,ColIndex)
end;
with Grid1 do
begin
BeginUpdate();
with (IUnknown(Columns.Add('Exontrol.ComboBox')) as EXGRIDLib_TLB.Column).Editor do
begin
EditType := EXGRIDLib_TLB.UserEditorType;
UserEditor('Exontrol.ComboBox','');
with (IUnknown(UserEditorObject) as EXCOMBOBOXLib_TLB.ComboBox) do
begin
BeginUpdate();
Style := 2;
ColumnAutoResize := False;
rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset);
with rs do
begin
Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null);
end;
DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
MinHeightList := 128;
SearchColumnIndex := 0;
UseTabKey := False;
EndUpdate();
end;
end;
DrawGridLines := EXGRIDLib_TLB.exRowLines;
DefaultItemHeight := 21;
with Items do
begin
CellEditorVisible[OleVariant(AddItem(OleVariant(10248))),OleVariant(0)] := EXGRIDLib_TLB.exEditorVisible;
CellEditorVisible[OleVariant(AddItem(OleVariant(10249))),OleVariant(0)] := EXGRIDLib_TLB.exEditorVisible;
CellEditorVisible[OleVariant(AddItem(OleVariant(10250))),OleVariant(0)] := EXGRIDLib_TLB.exEditorVisible;
end;
EndUpdate();
end
|
840
|
How can I add a header row
![](images/exgridq840.png)
with Grid1 do
begin
ShowLockedItems := True;
DrawGridLines := EXGRIDLib_TLB.exVLines;
Columns.Add('C1');
Columns.Add('C2');
with Items do
begin
LockedItemCount[EXGRIDLib_TLB.exTop] := 1;
h := LockedItem[EXGRIDLib_TLB.exTop,0];
ItemBackColor[h] := $808080;
ItemForeColor[h] := $ffffff;
CellValue[OleVariant(h),OleVariant(0)] := 'footer c1';
CellValue[OleVariant(h),OleVariant(1)] := 'footer c2';
CellValue[OleVariant(AddItem('cell')),OleVariant(1)] := 'cell';
end;
end
|
839
|
How can I add a footer row
![](images/exgridq839.png)
with Grid1 do
begin
ShowLockedItems := True;
DrawGridLines := EXGRIDLib_TLB.exVLines;
Columns.Add('C1');
Columns.Add('C2');
with Items do
begin
LockedItemCount[EXGRIDLib_TLB.exBottom] := 1;
h := LockedItem[EXGRIDLib_TLB.exBottom,0];
ItemBackColor[h] := $808080;
ItemForeColor[h] := $ffffff;
CellValue[OleVariant(h),OleVariant(0)] := 'footer c1';
CellValue[OleVariant(h),OleVariant(1)] := 'footer c2';
CellValue[OleVariant(AddItem('cell')),OleVariant(1)] := 'cell';
end;
end
|
838
|
How can I programmatically add more columns to the sort bar and other to be sorted, but not included in the sort bar
![](images/exgridq838.png)
with Grid1 do
begin
SortBarVisible := True;
with Columns do
begin
Add(0);
Add(1);
Add(2);
Add(3);
Add(4);
end;
Layout := 'multiplesort="C3:1 C4:2";singlesort="C2:1"';
end
|
837
|
How can I fix a column, while other sizable and fill the control's client
![](images/exgridq837.png)
with Grid1 do
begin
ColumnAutoResize := True;
Columns.Add('Sizable');
with (IUnknown(Columns.Add('F')) as EXGRIDLib_TLB.Column) do
begin
AllowSizing := False;
Width := 16;
end;
end
|
836
|
Is it possible to use empty values on a PickEditType editor (method 2)
![](images/exgridq836.png)
with Grid1 do
begin
with (IUnknown(Columns.Add('DropDown')) as EXGRIDLib_TLB.Column).Editor do
begin
EditType := EXGRIDLib_TLB.PickEditType;
AddItem(0,'',Null);
AddItem(1,'The first item',Null);
AddItem(2,'The second item',Null);
AddItem(3,'The third item',Null);
end;
with Items do
begin
AddItem('The first item');
AddItem('');
AddItem('The third item');
end;
end
|
835
|
Is it possible to use empty values on a PickEditType editor (method 1)
![](images/exgridq835.png)
with Grid1 do
begin
with (IUnknown(Columns.Add('DropDown')) as EXGRIDLib_TLB.Column).Editor do
begin
EditType := EXGRIDLib_TLB.PickEditType;
Option[EXGRIDLib_TLB.exPickAllowEmpty] := OleVariant(True);
AddItem(1,'The first item',Null);
AddItem(2,'The second item',Null);
AddItem(3,'The third item',Null);
end;
with Items do
begin
AddItem('The first item');
AddItem('');
AddItem('The third item');
end;
end
|
834
|
How can I specify an unselectable cell
![](images/exgridq834.png)
with Grid1 do
begin
BeginUpdate();
with Columns do
begin
Add('C1');
Add('C2');
Add('C3');
end;
with Items do
begin
h := AddItem('unselectable item');
CellValue[OleVariant(h),OleVariant(1)] := 'unselectable item';
CellValue[OleVariant(h),OleVariant(2)] := 'unselectable item';
SelectableItem[h] := False;
h := AddItem('selectable cell');
CellValue[OleVariant(h),OleVariant(1)] := 'unselectable cell';
CellEnabled[OleVariant(h),OleVariant(1)] := False;
CellForeColor[OleVariant(h),OleVariant(1)] := $0;
CellValue[OleVariant(h),OleVariant(2)] := 'disabled cell';
CellEnabled[OleVariant(h),OleVariant(2)] := False;
h := AddItem('disabled item');
CellValue[OleVariant(h),OleVariant(1)] := 'disabled item';
CellValue[OleVariant(h),OleVariant(2)] := 'disabled item';
EnableItem[h] := False;
SelectableItem[h] := False;
end;
EndUpdate();
end
|
833
|
Is it possible to edit a float number without using of e/E/d/D (exponent) and +/- (signs) characters
![](images/exgridq833.png)
with Grid1 do
begin
with (IUnknown(Columns.Add('Edit')) as EXGRIDLib_TLB.Column).Editor do
begin
EditType := EXGRIDLib_TLB.EditType;
Numeric := Integer(EXGRIDLib_TLB.exDisableSigns) Or Integer(EXGRIDLib_TLB.exFloatInteger);
end;
Items.AddItem(OleVariant(1.22));
end
|
832
|
How can I edit a float number with no using of e/E/d/D and + character
![](images/exgridq832.png)
with Grid1 do
begin
with (IUnknown(Columns.Add('Edit')) as EXGRIDLib_TLB.Column).Editor do
begin
EditType := EXGRIDLib_TLB.EditType;
Numeric := Integer(EXGRIDLib_TLB.exDisablePlus) Or Integer(EXGRIDLib_TLB.exFloatInteger);
end;
Items.AddItem(OleVariant(1.22));
end
|
831
|
Is it possible to edit a float number with no using of e/E/d/D (exponent) characters
![](images/exgridq831.png)
with Grid1 do
begin
with (IUnknown(Columns.Add('Edit')) as EXGRIDLib_TLB.Column).Editor do
begin
EditType := EXGRIDLib_TLB.EditType;
Numeric := EXGRIDLib_TLB.exFloatInteger;
end;
Items.AddItem(OleVariant(1.22));
end
|
830
|
How can I edit an integer with no using of +/- signs
![](images/exgridq830.png)
with Grid1 do
begin
with (IUnknown(Columns.Add('Edit')) as EXGRIDLib_TLB.Column).Editor do
begin
EditType := EXGRIDLib_TLB.EditType;
Numeric := EXGRIDLib_TLB.NumericEnum($fc Or Integer(EXGRIDLib_TLB.exDisableSigns) Or Integer(EXGRIDLib_TLB.exFloatInteger) Or Integer(EXGRIDLib_TLB.exFloat));
end;
Items.AddItem(OleVariant(1));
end
|
829
|
When I'm trying to show string with "line break" character (vbCrLF) in a textbox, it shows 2 squares. Is there any way to hide these squares
![](images/exgridq829.png)
with Grid1 do
begin
with Columns do
begin
Add('Value');
with (IUnknown(Add('CellSingleLine = False')) as EXGRIDLib_TLB.Column) do
begin
ComputedField := '%0';
Def[EXGRIDLib_TLB.exCellSingleLine] := OleVariant(False);
end;
with (IUnknown(Add('FormatColumn/replace CRLF')) as EXGRIDLib_TLB.Column) do
begin
ComputedField := '%0';
FormatColumn := 'value replace `\r\n` with ``';
end;
with (IUnknown(Add('FormatColumn/replace TAB,CRLF')) as EXGRIDLib_TLB.Column) do
begin
ComputedField := '%0';
FormatColumn := '(value replace `\t` with ``) replace `\r\n` with ``';
end;
end;
with Items do
begin
AddItem('a\ta\r\nb\tb');
end;
end
|
828
|
Is there any way to "unselect" radio group
![](images/exgridq828.png)
// DblClick event - Occurs when the user dblclk the left mouse button over an object.
procedure TForm1.Grid1DblClick(ASender: TObject; Shift : Smallint;X : Integer;Y : Integer);
begin
with Grid1 do
begin
with Items do
begin
h := CellChecked[1234];
CellHasCheckBox[OleVariant(0),OleVariant(h)] := True;
CellState[OleVariant(0),OleVariant(h)] := 0;
CellHasCheckBox[OleVariant(0),OleVariant(h)] := False;
end;
end
end;
// SelectionChanged event - Fired after a new item has been selected.
procedure TForm1.Grid1SelectionChanged(ASender: TObject; );
begin
with Grid1 do
begin
with Items do
begin
CellState[OleVariant(FocusItem),OleVariant(0)] := 1;
end;
end
end;
with Grid1 do
begin
MarkSearchColumn := False;
SelBackColor := RGB(255,255,128);
SelForeColor := RGB(0,0,0);
Columns.Add('Default');
with Items do
begin
h := AddItem('Radio 1');
CellHasRadioButton[OleVariant(h),OleVariant(0)] := True;
CellRadioGroup[OleVariant(h),OleVariant(0)] := 1234;
h := AddItem('Radio 2');
CellHasRadioButton[OleVariant(h),OleVariant(0)] := True;
CellRadioGroup[OleVariant(h),OleVariant(0)] := 1234;
CellState[OleVariant(h),OleVariant(0)] := 1;
h := AddItem('Radio 3');
CellHasRadioButton[OleVariant(h),OleVariant(0)] := True;
CellRadioGroup[OleVariant(h),OleVariant(0)] := 1234;
end;
end
|
827
|
The Column.Alignment property does not seem to work for cells with images in them. What can be done
![](images/exgridq827.png)
with Grid1 do
begin
BeginUpdate();
Images('gBJJgBAIDAAGAAEAAQhYAf8Pf4hh0QihCJo2AEZjQAjEZFEaIEaEEaAIAkcbk0olUrlktl0vmExmUzmk1m03nE5nU7nk9n0/oFBoVDolFo1HpFJpVLplNp1PqFRqVTql' +
'Vq1XrFZrVbrldr1fsFhsVjslls1ntFptVrtltt1vuFxuVzul1u13vF5vV7vl9v1/wGBwWDwmFw2HxGJxWLxmNx0xiFdyOTh8Tf9ZymXx+QytcyNgz8r0OblWjyWds+m0' +
'ka1Vf1ta1+r1mos2xrG2xeZ0+a0W0qOx3GO4NV3WeyvD2XJ5XL5nN51aiw+lfSj0gkUkAEllHanHI5j/cHg8EZf7w8vl8j4f/qfEZeB09/vjLAB30+kZQAP/P5/H6/yN' +
'AOAEAwCjMBwFAEDwJBMDwLBYAP2/8Hv8/gAGAD8LQs9w/nhDY/oygIA=');
TreeColumnIndex := -1;
DrawGridLines := EXGRIDLib_TLB.exAllLines;
HeaderHeight := 24;
DefaultItemHeight := 24;
with (IUnknown(Columns.Add('Image')) as EXGRIDLib_TLB.Column) do
begin
AllowSizing := False;
Width := 32;
HTMLCaption := '<img>1</img>';
HeaderAlignment := EXGRIDLib_TLB.CenterAlignment;
Alignment := EXGRIDLib_TLB.CenterAlignment;
Def[EXGRIDLib_TLB.exCellValueFormat] := OleVariant(1);
end;
Columns.Add('Rest');
with Items do
begin
AddItem('<img>1</img>');
AddItem('<img>2</img>');
AddItem('<img>3</img>');
end;
EndUpdate();
end
|
826
|
Can I change the format of date to be shown in the control
![](images/exgridq826.png)
with Grid1 do
begin
with Columns do
begin
Add('Default');
with (IUnknown(Add('Format.1')) as EXGRIDLib_TLB.Column) do
begin
ComputedField := '%0';
FormatColumn := 'dateF(value) replace `/` with `-`';
end;
with (IUnknown(Add('Format.2')) as EXGRIDLib_TLB.Column) do
begin
ComputedField := '%0';
Def[EXGRIDLib_TLB.exCellValueFormat] := OleVariant(1);
FormatColumn := '`<b>`+ shortdate(value) + `</b> ` + timeF(value)';
end;
with (IUnknown(Add('Format.3')) as EXGRIDLib_TLB.Column) do
begin
ComputedField := '%0';
Def[EXGRIDLib_TLB.exCellValueFormat] := OleVariant(1);
FormatColumn := '( dateF(value) replace `/` with `-` ) + ` <b>`+ ( weekday(value) case ( 0 : `Su`; 1 : `Mo`; 2 : `Tu`; 3 : `We`; 4 : `Th`; 5 : `F' +
'r`; 6 : `Sa`) )';
end;
end;
with Items do
begin
AddItem('1/1/2001 10:00:00 AM');
AddItem('1/2/2001 10:00:00 AM');
end;
end
|
825
|
How do I arrange my columns on multiple levels
![](images/exgridq825.png)
with Grid1 do
begin
BeginUpdate();
ColumnAutoResize := False;
DrawGridLines := EXGRIDLib_TLB.exAllLines;
with Columns do
begin
with (IUnknown(Add('C0')) as EXGRIDLib_TLB.Column) do
begin
ExpandColumns := '1,2';
DisplayExpandButton := False;
end;
Add('C1');
Add('C2');
Add('C3');
with (IUnknown(Add('C4')) as EXGRIDLib_TLB.Column) do
begin
ExpandColumns := '5,6';
DisplayExpandButton := False;
end;
Add('C5');
with (IUnknown(Add('C6')) as EXGRIDLib_TLB.Column) do
begin
ExpandColumns := '6,7';
DisplayExpandButton := False;
end;
Add('C7');
end;
EndUpdate();
end
|
824
|
Does your control support expandable header or columns, so I can arrange it on multiple levels
![](images/exgridq824.png)
with Grid1 do
begin
BeginUpdate();
DrawGridLines := EXGRIDLib_TLB.exAllLines;
BackColorLevelHeader := RGB(240,240,240);
with Columns do
begin
with (IUnknown(Add('Photo')) as EXGRIDLib_TLB.Column) do
begin
AllowSizing := False;
Width := 32;
end;
Add('Personal Info');
Add('Title');
Add('Name');
Add('First');
Add('Last');
Add('Address');
Item['Personal Info'].ExpandColumns := '2,3';
with Item['Name'] do
begin
ExpandColumns := '4,5';
Expanded := False;
end;
end;
EndUpdate();
end
|
823
|
How can I use the MinWidthAutoResize/MaxWidthAutoResize
![](images/exgridq823.png)
with Grid1 do
begin
BeginUpdate();
ColumnAutoResize := False;
rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset);
with rs do
begin
Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null);
end;
DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
with Columns.Item[OleVariant(0)] do
begin
MaxWidthAutoResize := 32;
WidthAutoResize := True;
end;
EndUpdate();
end
|
822
|
Does your control support subscript or superscript, in HTML captions
![](images/exgridq822.png)
with Grid1 do
begin
ColumnAutoResize := False;
HeaderHeight := 28;
DefaultItemHeight := 24;
with Columns do
begin
with (IUnknown(Add('Column 1')) as EXGRIDLib_TLB.Column) do
begin
HTMLCaption := 'Column <b><off 2><font ;6>1';
Def[EXGRIDLib_TLB.exCellValueFormat] := OleVariant(1);
end;
with (IUnknown(Add('Column 2')) as EXGRIDLib_TLB.Column) do
begin
HTMLCaption := 'Column <b><off 2><font ;6>2';
Def[EXGRIDLib_TLB.exCellValueFormat] := OleVariant(1);
end;
with (IUnknown(Add('Column 3')) as EXGRIDLib_TLB.Column) do
begin
HTMLCaption := 'Column <b><off 2><font ;6>3';
Def[EXGRIDLib_TLB.exCellValueFormat] := OleVariant(1);
end;
end;
with Items do
begin
h := AddItem('Item <font ;6><off 4>1');
CellValue[OleVariant(h),OleVariant(1)] := 'Item <font ;6><off -6>2';
CellValue[OleVariant(h),OleVariant(2)] := 'Item <b><font ;6><off -6>2<off 4>3<off 4>1';
end;
end
|
821
|
How can I specify the splited cell's background color
![](images/exgridq821.png)
with Grid1 do
begin
MarkSearchColumn := False;
TreeColumnIndex := -1;
(IUnknown(Columns.Add('1')) as EXGRIDLib_TLB.Column).Def[EXGRIDLib_TLB.exCellBackColor] := OleVariant(255);
with (IUnknown(Columns.Add('2')) as EXGRIDLib_TLB.Column) do
begin
Width := 32;
AllowSizing := False;
end;
with Items do
begin
h := AddItem('The Item''s background color inherits the Column.Def(exCellBackColor)');
ItemDivider[h] := 0;
h := AddItem('The Item''s background color inherits the CellBackColor()');
ItemDivider[h] := 0;
CellBackColor[OleVariant(h),Null] := $ff00;
h := AddItem('The Item''s background color inherits the CellBackColor(), while the split inherits from the Column.Def(exCellBackColor) ');
ItemDivider[h] := 0;
CellBackColor[OleVariant(h),Null] := $ff00;
var_SplitCell := SplitCell[OleVariant(h),OleVariant(0)];
h := AddItem('The Item''s background color inherits the CellBackColor()');
ItemDivider[h] := 0;
CellBackColor[OleVariant(h),Null] := $ff00;
CellBackColor[OleVariant(0),SplitCell[OleVariant(h),OleVariant(0)]] := $ff0000;
end;
end
|
820
|
How can I specify a fixed width for a column
![](images/exgridq820.png)
with Grid1 do
begin
MarkSearchColumn := False;
TreeColumnIndex := -1;
ColumnAutoResize := False;
with (IUnknown(Columns.Add('C1')) as EXGRIDLib_TLB.Column) do
begin
Width := 17;
AllowSizing := False;
end;
with (IUnknown(Columns.Add('C2')) as EXGRIDLib_TLB.Column) do
begin
Width := 17;
AllowSizing := False;
end;
Columns.Add('Other');
ColumnAutoResize := True;
end
|
819
|
How can I split a cell in three parts
![](images/exgridq819.png)
with Grid1 do
begin
BeginUpdate();
DrawGridLines := EXGRIDLib_TLB.exAllLines;
Columns.Add('Default');
with Items do
begin
h := AddItem('entire');
h := AddItem('split 1');
h := SplitCell[OleVariant(h),OleVariant(0)];
CellValue[OleVariant(0),OleVariant(h)] := 'split 2';
h := SplitCell[OleVariant(0),OleVariant(h)];
CellValue[OleVariant(0),OleVariant(h)] := 'split 3';
h := AddItem('entire');
end;
EndUpdate();
end
|
818
|
How can I find if there is any filter applied to the control
![](images/exgridq818.png)
// FilterChange event - Occurs when filter was changed.
procedure TForm1.Grid1FilterChange(ASender: TObject; );
begin
with Grid1 do
begin
OutputDebugString( 'If negative, the filter is present, else not' );
OutputDebugString( Items.VisibleItemCount );
end
end;
with Grid1 do
begin
BeginUpdate();
LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot;
TreeColumnIndex := -1;
FilterInclude := EXGRIDLib_TLB.exMatchingItemsOnly;
with (IUnknown(Columns.Add('Column')) as EXGRIDLib_TLB.Column) do
begin
DisplayFilterButton := True;
FilterType := EXGRIDLib_TLB.exFilter;
Filter := 'C1';
end;
with Items do
begin
h := AddItem('R1');
InsertItem(h,Null,'C1');
InsertItem(h,Null,'C2');
ExpandItem[h] := True;
h := AddItem('R2');
InsertItem(h,Null,'C1');
InsertItem(h,Null,'C2');
end;
ApplyFilter();
EndUpdate();
end
|
817
|
How can I prevent showing the lines for the hierarchy while using the exMatchingItemsOnly option
![](images/exgridq817.png)
with Grid1 do
begin
BeginUpdate();
LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot;
TreeColumnIndex := -1;
FilterInclude := EXGRIDLib_TLB.exMatchingItemsOnly;
with (IUnknown(Columns.Add('Column')) as EXGRIDLib_TLB.Column) do
begin
DisplayFilterButton := True;
FilterType := EXGRIDLib_TLB.exFilter;
Filter := 'C1|C2';
end;
with Items do
begin
h := AddItem('R1');
InsertItem(h,Null,'C1');
InsertItem(h,Null,'C2');
ExpandItem[h] := True;
h := AddItem('R2');
InsertItem(h,Null,'C1');
InsertItem(h,Null,'C2');
end;
ApplyFilter();
EndUpdate();
end
|
816
|
Is there any method to get only the matched items and not the items with his parent
![](images/exgridq816.png)
with Grid1 do
begin
BeginUpdate();
LinesAtRoot := EXGRIDLib_TLB.exLinesAtRoot;
FilterInclude := EXGRIDLib_TLB.exMatchingItemsOnly;
with (IUnknown(Columns.Add('Column')) as EXGRIDLib_TLB.Column) do
begin
DisplayFilterButton := True;
FilterType := EXGRIDLib_TLB.exFilter;
Filter := 'C1|C2';
end;
with Items do
begin
h := AddItem('R1');
InsertItem(h,Null,'C1');
InsertItem(h,Null,'C2');
ExpandItem[h] := True;
h := AddItem('R2');
InsertItem(h,Null,'C1');
InsertItem(h,Null,'C2');
end;
ApplyFilter();
EndUpdate();
end
|
815
|
Is there any property I can save and restore automatically the current setting, column position, size, and so on (2)
![](images/exgridq815.png)
with Grid1 do
begin
BeginUpdate();
Columns.Add('Column');
with Items do
begin
AddItem('Item 1');
AddItem('Item 2');
AddItem('Item 3');
end;
Layout := 'Select="0";SingleSort="C0:2";Columns=1';
EndUpdate();
end
|
814
|
Is there any property I can save and restore automatically the current setting, column position, size, and so on (1)
![](images/exgridq814.png)
with Grid1 do
begin
BeginUpdate();
Columns.Add('Column');
with Items do
begin
AddItem('Item 1');
AddItem('Item 2');
AddItem('Item 3');
end;
Layout := 'gBjAAwAAuABmABpABsAB0ABlAByhoAPIAOEPAA9gYABoABQAgUEg0XN4AOcJicKkpujMbjsfkMFk0YhkQgUOjUEl8gjcGO0ok8KMULjEaGMcj08kQAO8oMkTNEtGwAGQ' +
'Aqc7gUlhh1ABtAEsk9GpEfhElgVcsMupNlnlonlaAFcr0shUsp8QPEtnVJqJhmcIhUMh0QiU5sYAqMngUSuEMw07k8Qv0SgVRrNEuVflF2jF5x9JyNEm0TjQijemyE0j' +
'E3t+YruauoAu4Az1qj9BzRn0UzksSnAA0xDjY6qnAw8OiUQ0dwzN0zWz2t7j8/xURAGNvWH6k8xlEhklhEI0O/6QAgI=';
EndUpdate();
end
|
813
|
I have noticed that the column's header is changed once the cursor hovers it. Is it possible to change that visual appearance
![](images/exgridq813.png)
with Grid1 do
begin
VisualAppearance.Add(1,'c:\exontrol\images\normal.ebn');
with Columns do
begin
Add('Column 1');
Add('Column 2');
end;
BackColorHeader := $1000000;
Background[EXGRIDLib_TLB.exCursorHoverColumn] := $12d86ff;
end
|
812
|
Is it possible to change the visual appearance of the columns selector/floating bar(3)
![](images/exgridq812.png)
with Grid1 do
begin
ColumnAutoResize := False;
with Columns do
begin
Add('Column 1');
(IUnknown(Add('Column 2')) as EXGRIDLib_TLB.Column).Visible := False;
end;
VisualAppearance.Add(2,'c:\exontrol\images\normal.ebn');
VisualAppearance.Add(3,'c:\exontrol\images\pushed.ebn');
Background[EXGRIDLib_TLB.exColumnsFloatAppearance] := $2000000;
Background[EXGRIDLib_TLB.exColumnsFloatBackColor] := $3000000;
Background[EXGRIDLib_TLB.exColumnsFloatCaptionBackColor] := $f0f5f6;
ColumnsFloatBarVisible := EXGRIDLib_TLB.exColumnsFloatBarVisibleIncludeHiddenColumns;
end
|
811
|
Is it possible to change the visual appearance of the columns selector/floating bar(2)
![](images/exgridq811.png)
with Grid1 do
begin
ColumnAutoResize := False;
with Columns do
begin
Add('Column 1');
(IUnknown(Add('Column 2')) as EXGRIDLib_TLB.Column).Visible := False;
end;
VisualAppearance.Add(3,'c:\exontrol\images\pushed.ebn');
Background[EXGRIDLib_TLB.exColumnsFloatBackColor] := $3000000;
ColumnsFloatBarVisible := EXGRIDLib_TLB.exColumnsFloatBarVisibleIncludeHiddenColumns;
end
|
810
|
Is it possible to change the visual appearance of the columns selector/floating bar(1)
![](images/exgridq810.png)
with Grid1 do
begin
VisualAppearance.Add(2,'c:\exontrol\images\normal.ebn');
Background[EXGRIDLib_TLB.exColumnsFloatAppearance] := $2000000;
Background[EXGRIDLib_TLB.exColumnsFloatBackColor] := $f0f5f6;
Background[EXGRIDLib_TLB.exColumnsFloatCaptionBackColor] := $f0f5f6;
ColumnsFloatBarVisible := EXGRIDLib_TLB.exColumnsFloatBarVisibleIncludeHiddenColumns;
end
|
809
|
I am using the ColumnsFloatBarVisible property on True, but still not able to add any column on that list
![](images/exgridq809.png)
with Grid1 do
begin
ColumnAutoResize := False;
with Columns do
begin
Add('Column 1');
(IUnknown(Add('Column 2')) as EXGRIDLib_TLB.Column).Visible := False;
end;
ColumnsFloatBarVisible := EXGRIDLib_TLB.exColumnsFloatBarVisibleIncludeHiddenColumns;
end
|
808
|
Is it possible to list a column to columns selector/floating bar, but still user can use it
![](images/exgridq808.png)
with Grid1 do
begin
ColumnAutoResize := False;
with Columns do
begin
Add('Column 1');
(IUnknown(Add('Column 2')) as EXGRIDLib_TLB.Column).Visible := False;
with (IUnknown(Add('Column 3')) as EXGRIDLib_TLB.Column) do
begin
Visible := False;
Enabled := False;
end;
end;
ColumnsFloatBarVisible := EXGRIDLib_TLB.exColumnsFloatBarVisibleIncludeHiddenColumns;
end
|
807
|
How can I prevent a specific column not to be listed in the columns selector/floating bar
![](images/exgridq807.png)
with Grid1 do
begin
ColumnAutoResize := False;
with Columns do
begin
Add('Column 1');
(IUnknown(Add('Column 2')) as EXGRIDLib_TLB.Column).Visible := False;
with (IUnknown(Add('Column 3')) as EXGRIDLib_TLB.Column) do
begin
Visible := False;
AllowDragging := False;
end;
end;
ColumnsFloatBarVisible := EXGRIDLib_TLB.exColumnsFloatBarVisibleIncludeHiddenColumns;
end
|
806
|
Is it possible to change the "Columns" caption being shown in the columns selector/floating bar
![](images/exgridq806.png)
with Grid1 do
begin
ColumnAutoResize := False;
with Columns do
begin
Add('Column 1');
(IUnknown(Add('Column 2')) as EXGRIDLib_TLB.Column).Visible := False;
end;
Description[EXGRIDLib_TLB.exColumnsFloatBar] := 'Hidden Columns';
ColumnsFloatBarVisible := EXGRIDLib_TLB.exColumnsFloatBarVisibleIncludeHiddenColumns;
end
|
805
|
How can I show the columns selector, so the user can drag and drop columns to the view
![](images/exgridq805.png)
with Grid1 do
begin
ColumnAutoResize := False;
with Columns do
begin
Add('Column 1');
(IUnknown(Add('Column 2')) as EXGRIDLib_TLB.Column).Visible := False;
end;
ColumnsFloatBarVisible := EXGRIDLib_TLB.exColumnsFloatBarVisibleIncludeHiddenColumns;
end
|
804
|
The column's header is changed while the cursor hovers it. Is it possible to prevent that
![](images/exgridq804.png)
with Grid1 do
begin
with Columns do
begin
Add('Column 1');
Add('Column 2');
end;
Background[EXGRIDLib_TLB.exCursorHoverColumn] := $ffffffff;
end
|
803
|
I noticed that when grouping on a field, its details are always expanded. Is it possible to show collapsed by default (method 2)
![](images/exgridq803.png)
with Grid1 do
begin
BeginUpdate();
ColumnAutoResize := False;
rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset);
with rs do
begin
Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null);
end;
DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
SortBarVisible := True;
SortBarCaption := 'Drag a <b>column</b> header here to group by that column.';
AllowGroupBy := True;
Columns.Item[OleVariant(1)].SortOrder := EXGRIDLib_TLB.SortAscending;
EndUpdate();
BeginUpdate();
EnsureVisibleColumn(OleVariant(0));
Items.ExpandItem[0] := False;
EndUpdate();
end
|
802
|
I noticed that when grouping on a field, its details are always expanded. Is it possible to show collapsed by default (method 1)
![](images/exgridq802.png)
// AddGroupItem event - Occurs after a new Group Item has been inserted to Items collection.
procedure TForm1.Grid1AddGroupItem(ASender: TObject; Item : HITEM);
begin
with Grid1 do
begin
Items.ExpandItem[Item] := False;
end
end;
with Grid1 do
begin
BeginUpdate();
ColumnAutoResize := False;
rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset);
with rs do
begin
Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null);
end;
DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
SortBarVisible := True;
SortBarCaption := 'Drag a <b>column</b> header here to group by that column.';
AllowGroupBy := True;
Columns.Item[OleVariant(1)].SortOrder := EXGRIDLib_TLB.SortAscending;
EndUpdate();
end
|
801
|
Is there a possibility to expand / collapse all groups (or group by group) at runtime with a method (equivalent to pressing the + or - button in the group header)
![](images/exgridq801.png)
with Grid1 do
begin
BeginUpdate();
ColumnAutoResize := False;
rs := (IUnknown(ComObj.CreateComObject(ComObj.ProgIDToClassID('ADOR.Recordset'))) as ADODB_TLB.Recordset);
with rs do
begin
Open('Orders','Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Program Files\Exontrol\ExGrid\Sample\Access\misc.accdb',3,3,Null);
end;
DataSource := (IUnknown(rs) as ADODB_TLB.Recordset);
SortBarVisible := True;
SortBarCaption := 'Drag a <b>column</b> header here to group by that column.';
AllowGroupBy := True;
Columns.Item[OleVariant(1)].SortOrder := EXGRIDLib_TLB.SortAscending;
EndUpdate();
EnsureVisibleColumn(OleVariant(0));
BeginUpdate();
with Items do
begin
ExpandItem[RootItem[0]] := False;
ExpandItem[RootItem[1]] := False;
ExpandItem[RootItem[2]] := False;
end;
EndUpdate();
end
|